/**
 * Dify API请求封装
 * 使用alova替代原有的uni.request实现
 */

import alovaInstance from '@/api/core/alova.js'
import config from './config.js'

/**
 * Dify API请求方法
 * @param {string} url 请求路径
 * @param {Object} options 请求选项
 * @returns {Promise} 请求结果
 */
const difyRequest = async (url, options = {}) => {
  // 合并配置
  const {
    method = 'GET',
    data = {},
    timeout = config.timeout,
    ...restOptions
  } = options

  // 构造完整的URL
  const fullUrl = `${config.difyConfig.API_URL}${url}`

  // 创建alova请求方法
  const methodInstance = alovaInstance.Create(
    {
      url: fullUrl,
      method: method.toUpperCase(),
      ...restOptions
    },
    {
      // 设置超时时间
      timeout: timeout
    }
  )

  // 设置请求头
  methodInstance.config.headers = {
    ...methodInstance.config.headers,
    'Authorization': `Bearer ${config.difyConfig.API_KEY}`,
    'Content-Type': 'application/json'
  }

  // 如果有请求数据，设置请求体
  if (Object.keys(data).length > 0) {
    methodInstance.data = data
  }

  try {
    // 发送请求
    const response = await methodInstance.send()
    return response.data || response
  } catch (error) {
    console.error('Dify API请求失败:', error)
    throw error
  }
}

export { difyRequest }